De getElementsByTagName methode
Home

De getElementsByTagName methode

De getElementsByTagName methode

De eerste van de "traditionele" JavaScript selectors, is de getElementsByTagName methode. Deze methode doet precies wat die zegt: ze retourneert een HTMLCollection van elementen uit een webpagina.

Gebruik

Het resultaat van de methode wordt gewoonlijk opgeslagen als de waarde van een variabele:

var tableHeaders = document.getElementsByTagName("th");
var tableRows = document.getElementsByTagName("td");

De methode getElementsByTagName wordt altijd in het meervoud geschreven, en veronderstelt altijd dat er meerdere exemplaren van elk HTML element op de pagina zich bevinden. Ook al staat er slechts één HTML element op de pagina met die tagname, de methode getElementsByTagName retourneert altijd een HTMLCollection, die een array-achtige structuur is.


Met de length methode kan je nagaan hoeveel elementen met die tagname er op een bepaalde webpagina staan. In de Developer Console typ je:

tableHeaders.length;

En het antwoord is:

> 5

De methode getElementsByTagName kan vanuit elke HTML element op de pagina opgeroepen worden om alle kinderen in die welbepaalde tag name te verzamelen in een array. met uitzondering van het element zelf. Als we een table element hebben met id van boeken, dan haalt de volgende JavaScript alle <td> cellen uit de tabel op:

var boekTable = document.getElementById("boeken");
var cellen = boekTable.getElementsByTagName("td");

Je kan dat samentrekken in één statement:

var cellen = document.getElementById("boeken").getElementsByTagName("td");

Nog een voorbeeld

Als we het gebruiken met het table element met id folder kunnen we bijvoorbeeld alle td element ermee ophalen:

var folder = document.getElementById("folder");
var tds = folder.getElementsByTagName("td");

Die twee lijnen code zijn equivalent met de volgende uitgebreide manier van coderen:

var folder = document.getElementById("folder");
var tds = [];
for (var i = 1; i < folder.rows; i++) {
    for (var j = 0; j < folder.rows[i].cells.length; j++) {
        if (folder.rows[i].cells[j].nodeName == "TD") {
            tds.push(folder.rows[i].cells[j]à;
        }
    }
}

Welke de beste techniek is hangt af van de uit te voeren taak. De eerste techniek is de snelste. Voor meer controle is de tweede techniek aangewezen.

document.body

Tenslotte moeten we vermelden dat er één element is die direct geselecteerd kan worden zonder gebruik te maken van één of andere JavaScript methode. De selector: document.body geeft onmiddellijk toegang tot het root body element.

JI
2017-05-19 17:23:47